/**
 * 
 */
package com.cuc.platform.core.service;

import java.util.List;

import com.cuc.platform.core.domain.baseInfo.Organization;

/**
 * @author peepul
 *
 * 组织结构业务接口
 */
public interface OrganizationService {
	/**
	 * 根据标识获取Organization对象
	 * 
	 * @param id
	 * @return Organization
	 */
	public Organization getOrg(Long id);
	
	/**
	 * 获取所有Organization对象(非分页)
	 * 
	 * @return Organization List
	 */
	public List<Organization> getAllOrgs();
	
	/**
	 * 新增Organization对象
	 * 
	 * @param organization
	 */
	public void insertOrg(Organization org) throws ServiceException;
	
	/**
	 * 更新Organization对象
	 * 
	 * @param organization
	 * @throws ServiceException
	 */
	public void updateOrg(Organization org) throws ServiceException;
	
	/**
	 * 修改某个组织机构的状态位
	 * 	  有效：1
	 * 	  无效：0
	 * 
	 * @param orgId
	 * @param status
	 * @throws ServiceException
	 */
	public void updateStatus(Long orgId, Integer status) throws ServiceException;
	
	/**
	 * 根据id删除Organization对象
	 * 
	 * 注：删除成功返回值为1，如没找到要删除的数据返回0，如果删除出错，则产生异常
	 * @param id
	 */
	public void delOrg(Long id) throws ServiceException;	
	
	/**
	 * 根据父级组织id查找直属子级组织
	 * 
	 * 规则：过滤掉status状态为0不可用的组织数据
	 */
	public List<Organization> getChildOrgs(Long parentId);
}